using System;
using System.Collections.Generic;
using System.Text;
using SharpMud.MudLib.Common.Environment;

namespace SharpMud.MudLib.NovaSMAUG.Environment
{
    public class AreaDefinition : IEquatable<AreaInstance>
    {
        public AreaDefinition()
        {
            Header = new AreaHeader();
            Helps = new List<HelpData>();
        }

        public AreaHeader Header;
        public List<HelpData> Helps;

        public AreaInstance CreateInstance(NovaSMAUG.Environment.EnvironmentManager bindingEnvironment)
        {
            throw new NotImplementedException();
        }

        public void Reset(AreaInstance instance)
        {
            throw new NotImplementedException();
        }

        #region IEquatable<AreaInstance> Members

        public bool Equals(AreaInstance other)
        {
            throw new Exception("The method or operation is not implemented.");
        }

        #endregion
    }

    public class AreaHeader
    {
        public AreaHeader()
        {
            Resets = new List<ResetData>();

            this.Resets = new List<ResetData>();

            //this.name = fread_string_nohash(fp);
            this.author = "unknown";

            this.age = 15;

            this.LevelRecommendationRange = new NumberRange<int>(0,Interop.Constants.MAX_LEVEL);
            this.LevelRestrictionRange = new NumberRange<int>(0,Interop.Constants.MAX_LEVEL);

            /* initialize weather data - FB */
            this.weather = new List<WeatherData>();
            this.weather.Add(new WeatherData());

            return;
        }

        public List<ResetData> Resets;
        public short age;
        public string author; /* Scryn */

        public string name;
        public string filename;
        public int flags;
        public short status;  /* h, 8/11 */
        
        public short nplayer;
        public short reset_frequency;
        public NumberRange<int> RoomVnumRange;
        public NumberRange<int> ObjectVnumRange;
        public NumberRange<short> MobVnumRange;
        public NumberRange<int> LevelRecommendationRange;
        public NumberRange<int> LevelRestrictionRange;
        public int spelllimit;
        public int curr_spell_count;
        
        public string resetmsg; /* Rennard */
        public short max_players;
        public int mkills;
        public int mdeaths;
        public int pkills;
        public int pdeaths;
        public int gold_looted;
        public int illegal_pk;
        public NumberRange<int> economy;
        public List<WeatherData> weather; /* FB */
#if ENABLE_OVERLAND
        public ContinentReference continent; /* Added for Overland support - Samson 9-16-00 */
#endif
    }

}
